/**
 * 数据库配置
 * 
 * 当前使用本地JSON文件存储数据，但此配置文件为将来迁移到真正的数据库做准备
 */

const path = require('path');

// 数据存储目录
const dataDir = path.join(__dirname, '../data');

module.exports = {
  // 数据存储类型
  type: process.env.DB_TYPE || 'json',
  
  // JSON文件存储配置
  json: {
    dataDir,
    files: {
      family: path.join(dataDir, 'family.json'),
      chat: path.join(dataDir, 'chat.json'),
      settings: path.join(dataDir, 'settings.json')
    }
  },
  
  // MongoDB配置（为将来使用）
  mongodb: {
    uri: process.env.MONGODB_URI || 'mongodb://localhost:27017/ctrl100panel',
    options: {
      useNewUrlParser: true,
      useUnifiedTopology: true
    }
  },
  
  // SQLite配置（为将来使用）
  sqlite: {
    file: path.join(dataDir, 'database.sqlite')
  },
  
  // 初始化数据库
  init: async () => {
    const fs = require('fs').promises;
    
    try {
      // 确保数据目录存在
      await fs.mkdir(dataDir, { recursive: true });
      
      // 确保各数据文件存在
      for (const file of Object.values(module.exports.json.files)) {
        try {
          await fs.access(file);
        } catch (error) {
          // 文件不存在，创建空数据文件
          if (file.includes('family.json')) {
            await fs.writeFile(file, JSON.stringify([], null, 2));
          } else if (file.includes('chat.json')) {
            await fs.writeFile(file, JSON.stringify([], null, 2));
          } else if (file.includes('settings.json')) {
            await fs.writeFile(file, JSON.stringify({
              theme: 'light',
              language: 'zh-CN',
              notifications: true,
              weatherCity: '深圳',
              voiceAssistant: true
            }, null, 2));
          }
        }
      }
      
      console.log('数据库初始化成功');
      return true;
    } catch (error) {
      console.error('数据库初始化失败:', error);
      throw error;
    }
  }
};